package com.gitee.l0km.aocache.annotations;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 清除方法缓存注解<br>
 * 注解定义的各个字段用于指定要清除缓存的方法(Method)或构造方法(Constructor)
 * @author guyadong
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD )
@Repeatable(AoClears.class)
public @interface AoClear {
	/**
	 * 目标方法(Method)或构造方法(Constructor)所属的类，默认为注解所在方法或构造方法所属的类
	 */
	Class<?> targetClass() default Object.class;
	/**
	 * 方法名，为空则清除缓存的目标为构造方法(Constructor)
	 */
	String methodName() default "";
	/**
	 * 方法或构造方法的参数类型数组
	 */
	Class<?>[] parameterTypes()default {};
}
